#include "stm32f10x.h"
#include "uart.h"
#include "string.h"

void timer2_init(u16 psc,u16 arr)
{
  RCC->APB1ENR |= 1;//①使能定时器时钟源  第6章
	
	TIM2->PSC = psc;  //  计数时钟 = 时钟源 / PSC + 1    设置分频值
	TIM2->ARR = arr;  //设置重装载值
	
	TIM2->DIER |= 1;//使能中断--外设
	//NVIC_SetPriority(TIM2_IRQn,NVIC_EncodePriority(7-2,1,3));
	NVIC_EnableIRQ(TIM2_IRQn);//内核中断使能
	
	TIM2->CR1 = 0;//先关闭 计数器
}



void TIM2_IRQHandler(void)
{
//	static u8 cnt=0;
	TIM2->SR &=~(0X01<<0); //清除更新标志
	while(TIM2->SR&0x01);  //等待更新事件标志清除
	
	
	
}

//计数时间(溢出时间)= 计数周期X计数次数 = 1/(72M/PSC) X ARR=(ARR*PSC)/72M

void timer3_init(u16 psc,u16 arr)
{
  RCC->APB1ENR |= 1<<1;//①使能定时器时钟源  第6章
	
	TIM3->PSC = psc;  //  计数时钟 = 时钟源 / PSC + 1    设置分频值
	TIM3->ARR = arr;  //设置重装载值
	
	TIM3->DIER |= 1;//使能中断--外设
	//NVIC_SetPriority(TIM2_IRQn,NVIC_EncodePriority(7-2,1,3));
	NVIC_EnableIRQ(TIM3_IRQn);//内核中断使能
	
	TIM3->CR1 |=0x01<<0;//开计数器
}


void TIM3_IRQHandler(void)
{
	TIM3->SR &=~(0X01<<0); //清除更新标志
	while(TIM3->SR&0x01);  //等待更新事件标志清除
}
